Array.prototype.map に適当な関数をそのまま渡すのはやめよう
よく ['1', '2', '3'].map(parseInt) みたいなコードを見かけますが、この書き方だと正しく動きません。
Array.prototype.map() のコールバックに渡される引数は value: T だけではないからです。
引数
callback
arr の要素ごとに呼び出される関数です。 callback が実行されるたびに、返された値が new_array に追加されます。
callback 関数は以下の引数を受け付けます。
currentValue
現在処理中の要素の値です。
index 省略可
現在処理中の要素の配列内における添字です。
array 省略可
map が実行されている配列です。
つまり、(currentValue: T, index: number, array: T[]) => unknown という型ですね。
上の書き方の場合、parseInt() は parseInt('2', 1, ['1', '2', '3']) と呼び出される事になります。
parseInt() の第二引数は基数の指定なので、1 が渡されて NaN が返ってきます。
このように map() へ適当な関数をそのまま渡すと、意図しない引数を受け付けてしまい意図しない動作をする事があります。
['1', '2', '3'].map(n => parseInt(n, 10)) のようにアロー関数なりで囲ってあげましょう。